Transcrição
Mas ainda há um erro de compilação no método adiciona. Agora, como o TypeScript sabe que o valor retornado por um HTMLInputElement é sempre uma string, a passagem dos valores para o constructor de Negociacao não estão mais compatíveis.
// erro de compilação no método !
adiciona(event: Event) {
event.preventDefault();
const negociacao = new Negociacao(
this._inputData.value,
this._inputQuantidade.value,
this._inputValor.value);
console.log(negociacao);
}
[ts] Argument of type 'string' is not assignable to parameter of type 'Date'..
Precisamos converter as string para o respectivo tipo esperado pelo constructor() de Negociacao. No final, nossa classe NegociacaoController estará assim:
class NegociacaoController {
private _inputData: HTMLInputElement;
private _inputQuantidade: HTMLInputElement;
private _inputValor: HTMLInputElement;
constructor() {
this._inputData = <HTMLInputElement>document.querySelector('#data');
this._inputQuantidade = <HTMLInputElement>document.querySelector('#quantidade');
this._inputValor = <HTMLInputElement>document.querySelector('#valor');
}
adiciona(event: Event) {
event.preventDefault();
const negociacao = new Negociacao(
new Date(this._inputData.value.replace(/-/g, ',')),
parseInt(this._inputQuantidade.value),
parseFloat(this._inputValor.value));
console.log(negociacao);
}
}